package chapter06

/**
  * 重写一个非抽象方法需要用override修饰符，调用超类的方法使用super关键字
  *
  * Scala中类型检查和转换
  *   要测试某个对象是否属于某个给定的类，可以用isInstanceOf方法。用asInstanceOf方法将引用转换为子类的引用。classOf获取对象的类名。
  *   var 修饰的属性不能被重写，直接修改即可
  *   classOf[String]就如同Java的 String.class 。
  *   obj.isInstanceOf[T]就如同Java的obj instanceof T 判断obj是不是T类型。
  *   obj.asInstanceOf[T]就如同Java的(T)obj 将obj强转成T类型。
  */
object Test09_AbstractClass {
  def main(args: Array[String]): Unit = {
    val apple = new Apple
    apple.buy()

  }
}

// 定义抽象类
abstract class Good{
  // 非抽象属性
  var name:String="good"
  // 抽象属性
  var price:BigDecimal
  //非抽象方法
  def sale():Unit={
    println("sale good")
  }
  // 抽象方法
  def buy():Unit
}


class Apple extends Good{
  override var price: BigDecimal = 1.1

  override def buy(): Unit = {
    super.sale()
    println("buy buy buy")
  }
}
